1. Field of the Invention
Embodiments of the present invention generally relate to software deployment and more particularly, to a method and apparatus for deploying software as a service.
2. Description of the Related Art
Software development and deployment of computer products is a challenging and complicated process often involving the work of developers who write the software code, installer engineers who author the software installer for a wide variety of platforms, and release engineers who compile and release builds for both distributable products, such as those on CDs, DVDs, and the like, as well as for web store products that are downloadable from the Internet. There are many elements of a software product that need to be packaged for deployment. Currently, in order to deploy a software product, source code is compiled, which generates application binaries. Application binaries include executables and libraries. The binaries are then packaged with an operating system specific installer.
A distributed product build typically includes a media centric installer build/package of the product. A web store build is generally a compressed package of the same installer build as the distributable product build, but with a wrapper executable that is optimized for web download. Product updates, which essentially carry incremental changes to an originally shipped product, require the same set of steps to create and deploy as the originally shipped product.
A product application is generally dependent on a number of shared technology binaries, which are also compiled, built, packaged and released with the deployed software product. In addition to the core product and the shared technology binaries, there are other elements, such as a collection of help content, a collection of language packs, and a collection of functional content are shipped with the product to enhance its usage. With every software release and/or upgrade, the created software packages, installer, and archives are created and delivered to the end user. Once the end user receives the application package, the files must be extracted and installed.
The entire release cycle to create a new application feature requires detailed release planning and engineering effort that may take several months. Users may inadvertently install the wrong application, for example, due to confusion between the 32-bit and 64-bit versions, which could result in performance issues. Further, the end user needs to download the entire application package with a full installer to get a version of software. Even when a user is informed that a software update exists, the entire process of create/compress/deploy/extract/install is required to be performed, creating a significant development and deployment burden for the software developer as well as an additional inconvenience for the end user.
Therefore, there is a need for a method and apparatus for deploying software as a service.